package com.huabo.audit.oracle.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Set;

import javax.persistence.Id;
import javax.persistence.Transient;

import org.springframework.format.annotation.DateTimeFormat;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.huabo.audit.config.IgnoreSwaggerParameter;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

@TableName("TBL_NBSJ_PROJECT")
@Data
@ApiModel("审计项目实体类")
@Accessors(chain = true)
public class TblNbsjProject implements Serializable{
	
	private static final long serialVersionUID = 1L;
	public final static Integer NO_SELECT=0;//未切换
	public final static Integer YE_SELECT=1;//已切换
	public final static Integer UPDATENO = 0;//不完整
	public final static Integer UPDATEYES = 1;//完整
	public final static Integer GD_STATUS=4;//审计项目归档状态
	public final static Integer EXAMINETYPE1 = 1;//未审批
	/**
	 * 审批中
	 */
	public final static Integer EXAMINETYPE2 = 2;//审批中
	public final static Integer EXAMINETYPE3 = 3;//审批驳回
	public final static Integer EXAMINETYPE4 = 4;//审批通过
	public final static Integer EXAMINETYPE5 = 5;//需调整
	public final static Integer EXAMINETYPE6 = 6;//中断

	@Id
    @TableId(value = "PROJECTID")
    @ApiModelProperty(value="审计项目ID")
    private Integer projectId;

    @TableField(value = "PRJOECTNAME")
    @ApiModelProperty(value="审计项目名称")
    private String prjoectName;

    @TableField(value = "PLANYEAR")
    @ApiModelProperty(value="计划年份")
    private String planYear;

    @TableField(value = "PROJECTSOURCE")
    @ApiModelProperty(value="项目来源")
    private String projectSource;

    @TableField(value = "STARTDATE")
    @ApiModelProperty(value="开始时间")
//    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME)
    private Date startDate;

    @TableField(value = "ENDDATE")
    @ApiModelProperty(value="结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME)
    private Date endDate;

    @TableField(value = "PMID")
    @ApiModelProperty(value="项目经理")
    private Integer pmId;

    @TableField(value = "TEMPID")
    @ApiModelProperty(value="审计模板id")
    private Integer tempId;

    @TableField(value = "COSTS")
    @ApiModelProperty(value="费用")
    private Integer costs;

    @TableField(value = "PURPOSE")
    @ApiModelProperty(value="审计目标和范围")
    private String purpose;

    @TableField(value = "SCOPES")
    @ApiModelProperty(value="审计内容和重点")
    private String scopes;

    @TableField(value = "PURSUANT")
    @ApiModelProperty(value="审计程序和方法")
    private String pursuant;

    @TableField(value = "COMMENTS")
    @ApiModelProperty(value="备注")
    private String comments;

    @TableField(value = "UMPIREID")
    @ApiModelProperty(value="主审人")
    private Integer umpireId;

    @TableField(value = "CONTROLID")
    @ApiModelProperty(value="质控经理")
    private Integer controlId;

    @TableField(value = "AUDITTYPE")
    @ApiModelProperty(value="审计类型")
    private String auditType;

    @TableField(value = "PROJECTCODE")
    @ApiModelProperty(value="项目编号")
    private String projectCode;

    @TableField(value = "STATUS")
    @ApiModelProperty(value="状态:1启动 0未启动 2实施 3完成 4归档")
    private Integer status;

    @TableField(value = "CREATETIME")
    @ApiModelProperty(value="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    @TableField(value = "UPDATETIME")
    @ApiModelProperty(value="修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    @TableField(value = "CURRENTSTATRE")
    @ApiModelProperty(value="选择的项目")
    private Integer currentStatre;

    @TableField(value = "CREATESTAFFID")
    @ApiModelProperty(value="创建人")
    private Integer createStaffId;

    @TableField(value = "ASSIGBEDPMTIME")
    @ApiModelProperty(value="指派项目经理时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date assigbedpmTime;

    @TableField(value = "ASSIGBEDUMPETIME")
    @ApiModelProperty(value="指派主审人时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date assigbedumpeTime;

    @TableField(value = "ASSIGBEDCONTROLTIME")
    @ApiModelProperty(value="指派质控经理时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date assigbedControlTime;

    @TableField(value = "PLANID")
    @ApiModelProperty(value="计划编号")
    private Integer planId;

    @TableField(value = "AUDITORGID")
    @ApiModelProperty(value="审计对象组织/被审计单位组织id")
    private Integer auditOrgId;

    @TableField(value = "TEMPZYID")
    @ApiModelProperty(value="指引模板")
    private Integer tempzyId;

    @TableField(value = "UPDATESTATUS")
    @ApiModelProperty(value="修改模板时间")
    private Integer updateStatus;

    @TableField(value = "ORGID")
    @ApiModelProperty(value="隶属组织")
    private Integer orgId;

    @TableField(value = "FINISHTIME")
    @ApiModelProperty(value="完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date finishTime;

    @TableField(value = "IMPLEMENTTIME")
    @ApiModelProperty(value="实施时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date implementTime;

    @TableField(value = "EXAMINETYPE")
    @ApiModelProperty(value="审批状态 1：未审批 2：审批中 3：审批驳回 4：审批通过")
    private Integer examineType;

    @TableField(value = "PRO_DESC")
    @ApiModelProperty(value="相关内容")
    private String proDesc;

    @TableField(value = "PRO_SJFS")
    @ApiModelProperty(value="审计方式")
    private String proSjfs;

    @TableField(value = "AUDITSTAFFID")
    @ApiModelProperty(value="审计对象人")
    private Integer auditStaffId;

    @TableField(value = "SJLX")
    @ApiModelProperty(value="")
    private String sjlx;

    @TableField(value = "SJZR")
    @ApiModelProperty(value="")
    private String sjzr;

    @TableField(value = "YQJCQK")
    @ApiModelProperty(value="")
    private String yqjcqk;

    @TableField(value = "EJFHR")
    @ApiModelProperty(value="")
    private Integer ejfhr;

    @TableField(value = "TEMPLETEID")
    @ApiModelProperty(value="")
    private Integer templeteId;

    @TableField(value = "STAFFID")
    @ApiModelProperty(value="")
    private Integer staffId;

    @TableField(value = "AUDITORG")
    @ApiModelProperty(value="")
    private String auditOrg;

    @TableField(value = "FPSTATUS")
    @ApiModelProperty(value="")
    private Integer fpStatus;

    @TableField(value = "PLANPROJECTID")
    @ApiModelProperty(value="")
    private Integer planProjectId;

    @TableField(value = "PPROJECTNAME")
    @ApiModelProperty(value="计划项目名称")
    private String pprojectName;

    @TableField(value = "TARGETNAME")
    @ApiModelProperty(value="工作目标")
    private String targetName;

    @TableField(value = "ORGIDS")
    @ApiModelProperty(value="组织id")
    private String orgIds;

    @TableField(value = "ORGIDNAMES")
    @ApiModelProperty(value="")
    private String orgIdNames;

    @TableField(value = "EXTERNALASSIG")
    @ApiModelProperty(value="是否外委")
    private Integer externAlassig;

    @TableField(value = "PCOUNT")
    @ApiModelProperty(value="")
    private Integer pCount;

    @TableField(value = "PSTATUS")
    @ApiModelProperty(value="")
    private Integer pStatus;

    @TableField(value = "FILCODE")
    @ApiModelProperty(value="")
    private String filCode;

    @TableField(value = "FILNAME")
    @ApiModelProperty(value="")
    private String filName;

    @ApiModelProperty(value="项目经理实体")
    @Transient
    @IgnoreSwaggerParameter
    private TblStaff pmStaff;
    
    @ApiModelProperty(value="被审计单位实体")
    @Transient
    @IgnoreSwaggerParameter
    private TblOrganization auditOrgInfo;
    
    @TableField(value = "orgInfo")
    @ApiModelProperty(value="")
    private TblOrganization orgInfo;

    @ApiModelProperty(value="项目团队人员",hidden=true)
    @Transient
    private BigDecimal teamStaffId;
	
    @ApiModelProperty(value="实施天数",hidden=true)
    @Transient
    private Integer days;
    
    @TableField(value = "realname")
    @ApiModelProperty(value="")
    private String realname;
    
    @TableField(value = "")
    @ApiModelProperty(value="")
    private String planName;
    
    @TableField(value = "")
    @ApiModelProperty(value="")
    private String planCode;
    
    @TableField(exist = false)
    @ApiModelProperty(value="审计模板",hidden=true)
    @IgnoreSwaggerParameter
    private TblNbsjTempleteEntity tbltemplete;//审计模板
    
    @TableField(exist = false)
    @ApiModelProperty(value="指引模板",hidden=true)
    @IgnoreSwaggerParameter
    private TblNbsjTempleteEntity tbltempletezy;
    
    @TableField(value = "tblnbsjPlan")
    @ApiModelProperty(value="",hidden=true)
    @IgnoreSwaggerParameter
    private TblNbsjAuditplan tblnbsjPlan;
    
    
    @TableField(value = "")
    @ApiModelProperty(value="",hidden=true)
    @IgnoreSwaggerParameter
    private String planStartDate;
    
    @TableField(value = "")
    @ApiModelProperty(value="",hidden=true)
    @IgnoreSwaggerParameter
    private String planEndDate;
    
    //浙资新增字段新增字段
    @TableField(value = "IMPLEMENTAION")
    @ApiModelProperty(value="实施主体")
    private String implementaion;
    
    @TableField(value = "COSPOMSORDEPARTMENT")
    @ApiModelProperty(value="协办部门id")
    private Integer cospomsordepartment;
    
    @TableField(value = "TIMEREQUIREMENT")
    @ApiModelProperty(value="实施时间要求")
    private String timerequirment;
    
    
    @TableField(value = "AUDITBASIS")
    @ApiModelProperty(value="审计依据")
    private String aduitbasis;
    
    
    @TableField(value = "IMPLEMENTAIONSTEPS")
    @ApiModelProperty(value="具体实施步骤")
    private String implementaionsteps;
    
    @TableField(value = "AUDITREQUIREMENTS")
    @ApiModelProperty(value="审计要求")
    private String auditrequirements;
    
    
    
    
    
    @TableField(value = "")
    @ApiModelProperty(value="",hidden=true)
    @IgnoreSwaggerParameter
    private String createUserName;
    @TableField(value = "")
    @ApiModelProperty(value="",hidden=true)
    @IgnoreSwaggerParameter
    private Integer isBmAudit;
    
    @TableField(value = "")
    @ApiModelProperty(value="",hidden=true)
    @IgnoreSwaggerParameter
    private String auditOrgName;
    
    @TableField(value = "")
    @ApiModelProperty(value="",hidden=true)
    @IgnoreSwaggerParameter
    private String auditStaffName;
    
    @TableField(value = "")
    @ApiModelProperty(value="",hidden=true)
    @IgnoreSwaggerParameter
    private Set<TblAttachment> tblprojectAtts;
    
    @TableField(value = "")
    @ApiModelProperty(value="")
    private Integer cyrrentStatre;//0 未切换  1切换
    
    @TableField(value = "")
    @ApiModelProperty(value="")
    private String protempid;
    
    
}
